package m1;

import com.rabbitmq.client.*;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

public class Consumer {
    public static void main(String[] args) throws IOException, TimeoutException {
        //连接服务器
        ConnectionFactory f = new ConnectionFactory();
        f.setHost("192.168.64.140");
        // 5672 端口，客户端应收发消息的端口
        // 15672 端口。管理控制台界面的访问端口
        f.setPort(5672);
        f.setUsername("admin");
        f.setPassword("admin");
        Connection con = f.newConnection();
        Channel c = con.createChannel();  //通信的通道
        //在服务器上创建队列：helloworld
        //如果队列已经存在，不回重复的创建
        c.queueDeclare("hellowrold",false,false,false,null);
        //创建回调对象
        //用来处理消息的回调对象
        DeliverCallback deliverCallback = (consumerTag,message) ->{
            byte[] a = message.getBody();
            String s = new String(a);
            System.out.println("收到："+s);
        };
//      DeliverCallback deliverCallback= new DeliverCallback() {
//            @Override
//            public void handle(String consumerTag, Delivery message) throws IOException {
//
//            }
//        };
        //消费者取消接收消息时，执行的回调对象
        CancelCallback cancelCallback = consumerTag -> {

        };
        //从 helloworld 队列接收消息,传递到回调对象进行处理
        /**
         * 第二个参数：autoAck -- Auto Acknowledement 自动确认
         * - true   自动确认
         * - false  手动确认
         */
        c.basicConsume("helloworld",true,deliverCallback,cancelCallback);
    }
}
